The modern communications era has brought about a tremendous expansion of wireline and wireless networks. Computer networks, television networks, and telephony networks are experiencing an unprecedented technological expansion, fueled by consumer demand. Wireless and mobile networking technologies have addressed related consumer demands, while providing more flexibility and immediacy of information transfer.
Current and future networking technologies continue to facilitate ease of information transfer and convenience to users. One area in which there is a demand to increase the ease of information transfer and convenience to users relates to provision of various applications or software to users of electronic devices such as mobile terminals. The applications or software may be executed from a local computer, a network server or other network device, or from the mobile terminal such as, for example, a mobile telephone, a mobile television, a mobile gaming system, video recorders, cameras, etc, or even from a combination of the mobile terminal and the network device. In this regard, various applications and software have been developed, and continue to be developed, in order to give the users robust capabilities to perform tasks, communicate, entertain themselves, gather and/or analyze information, etc. in either fixed or mobile environments.
Given the ubiquitous nature of cameras in mobile terminals and other resource constrained devices, efforts have been made to improve image quality and other image processing techniques. For example, certain applications have been developed to improve image processing by introducing motion vectors, which are now well known in the art. Motion vectors are used in motion estimation for motion compensated prediction in order to increase coding efficiency. Motion vectors describe the relative motion of a particular block in subsequent frames by representing the motion of the particular block in a frame to the position of a best match for the particular block in a subsequent frame. By employing motion vectors in describing the motion of blocks in subsequent frames with increased accuracy, state-of-the-art video coding standards may provide improved video quality at similar bit rates to the bit rates of previous standards. Accordingly, motion vectors are typically utilized in a motion estimation stage during which interpolation steps are performed to estimate the motion vectors. Furthermore, such motion vectors may be produced with accuracies beyond the integer pixel level to the half or even quarter pixel levels. Future technologies may even be able to increase accuracies beyond the quarter pixel level. However, motion estimation is often one of the more complex operations of a typical encoder due the interpolation steps performed to determine the motion vectors. Additionally, when increased accuracy is sought, more interpolation steps become advantageous and computational complexity is increased.
Unfortunately, many platforms on which camera images are produced may be limited resource devices such as mobile terminals. Such limited resource devices may have limited computational power, battery life, display sizes, etc. Thus, the increased complexity involved in motion estimation may increase resource consumption and decrease battery life of such devices. Additionally, in real-time encoding use-cases such as video telephony, if the time used for encoding of a particular frame exceeds an allocated time, the frame may be skipped, thereby reducing quality. Accordingly, it may be increasingly desirable to provide algorithms that are capable to achieve faster encoding speeds while maintaining image quality.